// 引入 Node.js 内置的 readline 模块，用于读取用户键盘输入
const readline = require('readline');

// 1. 创建 readline 接口（配置输入流和输出流）
const rl = readline.createInterface({
  input: process.stdin, // 输入流（键盘）
  output: process.stdout // 输出流（控制台）
});

// 2. 定义要收集的用户信息字段（顺序对应提示顺序）
const fields = [
  { name: 'name', prompt: '请输入您的姓名：' },
  { name: 'email', prompt: '请输入您的邮箱：' },
  { name: 'qq', prompt: '请输入您的 QQ 号：' },
  { name: 'phone', prompt: '请输入您的手机号码：' }
];

// 3. 定义存储用户信息的对象
const userInfo = {};

// 4. 递归函数：逐条获取用户输入（按 fields 顺序）
function collectUserInfo(fieldIndex = 0) {
  // 若所有字段都已收集完毕，结束交互并输出结果
  if (fieldIndex >= fields.length) {
    console.log('\n=== 您输入的完整信息 ===');
    console.log(userInfo); // 输出用户信息对象
    rl.close(); // 关闭 readline 接口（释放资源）
    return;
  }

  // 获取当前要收集的字段信息
  const currentField = fields[fieldIndex];

  // 提示用户输入，并监听输入事件
  rl.question(currentField.prompt, (input) => {
    // 保存用户输入到对象（去空格处理）
    userInfo[currentField.name] = input.trim();

    // 递归调用，收集下一个字段的信息
    collectUserInfo(fieldIndex + 1);
  });
}

// 5. 开始收集用户信息（从第一个字段开始）
console.log('请按提示输入以下信息（输入后按回车确认）：');
collectUserInfo();

// 6. 监听 readline 接口关闭事件（可选）
rl.on('close', () => {
  console.log('\n信息收集完成，程序已退出！');
});